上一篇提到,這個系列會先聚焦 EVM 智慧合約。但馬上遇到另一個問題:同一種安全問題,在不同網站上可能有不同名稱;有些文件列的是弱點類型,有些整理的是具體漏洞,還有一些列的是安全要求。
智慧合約的弱點與漏洞,目前沒有一套完全統一的分類方式。不過入門要了解常見的問題與類型,可以參考下面幾個網站。
這篇先固定兩個詞的用法:弱點(weakness)是可能導致漏洞的缺陷類型;漏洞(vulnerability)則是某個具體系統裡可以被利用並造成影響的弱點實例。
在傳統軟體資安裡,CWE(Common Weakness Enumeration)會替常見的軟體弱點分類和編號。SWC 想在智慧合約領域做類似的事:它沿用一部分 CWE 的術語與結構,再加入智慧合約特有的弱點。例如可能導致重入攻擊的重入弱點被編為 SWC-107,並對應到較廣義的 CWE-841。
這套共同編號讓文章、工具和審計報告比較容易互相對照。不過 SWC 官方已經註明,它在 2020 年後沒有被顯著更新,也不再積極維護,可能有缺漏。因此它適合用來讀歷史資料和對照,卻不適合單獨當成現在的安全標準。
OWASP Smart Contract Security 專案裡,SCWE 負責替智慧合約弱點分類和編號。它主要用來表示「這個弱點叫什麼」,用途和 SWC 比較接近,但目前仍持續維護。
SCSVS(Smart Contract Security Verification Standard)定義智慧合約應該滿足的安全要求,另外還有 SCSTG(Smart Contract Security Testing Guide),說明這些要求可以怎麼測試。
OWASP Smart Contract Top 10,簡稱 OWASP SC Top 10,是幾乎每年都會出的一份風險認知文件。2026 的版本根據從業者調查與 2025 年事件資料,整理 Access Control、Business Logic、Oracle、Flash Loan、Reentrancy 和 Upgradeability 等十類重要風險。
適合快速建立全貌和優先順序,但不是完整的弱點目錄。
OpenSCV 是一套開放、階層式的智慧合約安全問題分類。它的正式名稱使用 Vulnerabilities,但內容主要整理可重複出現的缺陷類型,並對照 SWC、DASP、CWE 與常見同義詞。
它對研究和整理案例很有用,因為同一個問題不會只剩下一個扁平標籤,也能看見不同分類之間的關係。不過它主要解決的是「這類問題應該放在哪裡」,不是告訴審計人員每一項要怎麼驗證。
後面的文章會保留 SWC 來讀舊資料,以 SCWE 對齊弱點名稱,用 OWASP Top 10 建立大方向,再用 OpenSCV 查看分類之間的關係。下一篇先處理 Finding、Counterexample 和 Proof:它們看起來都像答案,但能支持的結論其實不一樣。